public class Test {
    /*
    题目 1 : 加一
     */
    //给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
    //最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
    //你可以假设除了整数 0 之外，这个整数不会以零开头
    //一开始只是针对个位数加1，但如果要进位，其实对于其他位来说，也只是加一！！！
    public int[] plusOne(int[] digits) {
        int n = digits.length;
        for(int i = n - 1; i >= 0; i--){
            digits[i] = (digits[i] + 1) % 10;
            if(digits[i] != 0){
                return digits;
            }
        }
        digits = new int[n + 1];
        digits[0] = 1;
        return digits;
    }

    public static void main1(String[] args) {
        System.out.println(' ' +'c');
    }

    /*
    题目2 ：最后一个单词的长度
     */
    //给你一个字符串 s，由若干单词组成，单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
    //单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
    public int lengthOfLastWord(String s) {
        int index = s.length() - 1;
        int count = 0;
        while(s.charAt(index) == ' '){
            index--;
        }
        while(index >= 0 && s.charAt(index) != ' '){
            count++;
            index--;
        }
        return count;
    }

    public int lengthOfLastWord1(String s) {
        String[] strs = s.split(" ");
        for(int i = strs.length - 1; i >= 0; i--){
            if(strs[i] != " "){
                return strs[i].length();
            }
        }
        return -1;
    }

    /*
    题目 3 寻找重复的数字
     */
    //找出数组中重复的数字。
    //在一个长度为 n 的数组 nums 里的所有数字都在 0～n-1 的范围内。
    // 数组中某些数字是重复的，但不知道有几个数字重复了，也不知道每个数字重复了几次。
    // 请找出数组中任意一个重复的数字。
    //原地交换！
    public int findRepeatNumber(int[] nums) {
        int i = 0;
        while (i < nums.length) {
            if (nums[i] == i) {
                i++;
                continue;
            }
            if (nums[nums[i]] == nums[i]) {
                return nums[i];
            }
            int temp = nums[i];
            nums[i] = nums[temp];
            nums[temp] = temp;
        }
        return -1;
    }
}
